package user

import (
	"context"
	"github.com/star-find-cloud/star-chat/user/pb"
	"github.com/star-find-cloud/star-chat/user/service"
)

type UserServer struct {
	service service.UserService
	pb.UnimplementedUserServiceServer
}

var _ pb.UserServiceServer = (*UserServer)(nil)

func NewUserServer(userService service.UserService) *UserServer {
	return &UserServer{service: userService}
}

func (s *UserServer) Create(context.Context, *pb.User) (*pb.UserID, error) {
	// TODO: 待实现
	panic("待实现")
}

// Register 注册用户
func (s *UserServer) Register(context.Context, *pb.RegisterRequest) (*pb.RegisterResponse, error) {
	// TODO: 待实现
	panic("待实现")
}

// GetUser 获取用户信息
func (s *UserServer) GetUser(context.Context, *pb.UserID) (*pb.User, error) {
	// TODO: 待实现
	panic("待实现")
}

// Login 登录
func (s *UserServer) Login(context.Context, *pb.User) (*pb.UserID, error) {
	// TODO: 待实现
	panic("待实现")
}

// GetByID 通过 ID 获取用户元数据
func (s *UserServer) GetByID(context.Context, *pb.UserID) (*pb.User, error) {
	// TODO: 待实现
	panic("待实现")
}

// GetByEmail 通过邮箱获取用户元数据
func (s *UserServer) GetByEmail(context.Context, *pb.UserEmail) (*pb.User, error) {
	// TODO: 待实现
	panic("待实现")
}

// GetByPhone 通过手机号获取用户元数据
func (s *UserServer) GetByPhone(context.Context, *pb.UserPhone) (*pb.User, error) {
	// TODO: 待实现
	panic("待实现")
}

// Update 更新用户信息
func (s *UserServer) Update(context.Context, *pb.UpdateRequest) (*pb.UpdateResponse, error) {
	// TODO: 待实现
	panic("待实现")
}

// UpdateUserPassword 修改用户密码
func (s *UserServer) UpdateUserPassword(context.Context, *pb.UpdatePasswordRequest) (*pb.UpdateResponse, error) {
	// TODO: 待实现
	panic("待实现")
}

// UpdatePhone 修改用户手机号
func (s *UserServer) UpdatePhone(context.Context, *pb.UpdatePhoneRequest) (*pb.UpdateResponse, error) {
	// TODO: 待实现
	panic("待实现")
}

// ForgetPassword 忘记密码
func (s *UserServer) ForgetPassword(context.Context, *pb.ForgetPasswordRequest) (*pb.UpdateResponse, error) {
	// TODO: 待实现
	panic("待实现")
}

// BannedUser 封禁用户
func (s *UserServer) BannedUser(context.Context, *pb.UserID) (*pb.UpdateResponse, error) {
	// TODO: 待实现
	panic("待实现")
}

// DeleteUser 删除用户
func (s *UserServer) DeleteUser(context.Context, *pb.UserID) (*pb.UpdateResponse, error) {
	// TODO: 待实现
	panic("待实现")
}
